home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt40s1.arc / FASTTIME.MOD < prev    next >
Text File  |  1986-04-18  |  4KB  |  71 lines

  1. (*----------------------------------------------------------------------*)
  2. (*         FastTime --- Get time of day in hours/min as integer         *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. PROCEDURE FastTime( VAR HourMin: INTEGER );
  6.  
  7. (*----------------------------------------------------------------------*)
  8. (*                                                                      *)
  9. (*     Procedure:  FastTime                                             *)
  10. (*                                                                      *)
  11. (*     Purpose:    Get time of day in hours/min as integer              *)
  12. (*                                                                      *)
  13. (*     Calling Sequence:                                                *)
  14. (*                                                                      *)
  15. (*        FastTime( VAR HourMin: INTEGER );                             *)
  16. (*                                                                      *)
  17. (*           HourMin --- Resultant time of day;                         *)
  18. (*                       HI( HourMin ) = Hour;                          *)
  19. (*                       LO( HourMin ) = Minutes.                       *)
  20. (*                                                                      *)
  21. (*     Remarks:                                                         *)
  22. (*                                                                      *)
  23. (*        This routine is based upon one by Robert Tolz.                *)
  24. (*                                                                      *)
  25. (*----------------------------------------------------------------------*)
  26.  
  27. BEGIN (* FastTime *)
  28.  
  29.    INLINE(
  30.           {ON:}
  31.            $B8/$00/$00 {          MOV    AX,$0000             ;READ TIME FUNCTION}
  32.           /$CD/$1A {             INT    $1A                  ;CALL BIOS FOR TIME}
  33.           /$89/$C8 {             MOV    AX,CX                ;PUT HI PORTION IN AX}
  34.           /$89/$D3 {             MOV    BX,DX                ;AND LOW PORTION IN BX}
  35.           /$D1/$E2 {             SHL    DX,1                 ;CALCULATE TIME}
  36.           /$D1/$D1 {             RCL    CX,1                 ;I DONT KNOW HOW THIS}
  37.           /$D1/$E2 {             SHL    DX,1                 ;WORKS, I LIFTED IT FROM}
  38.           /$D1/$D1 {             RCL    CX,1                 ;THE ORIGINAL CLOCK.COM}
  39.           /$01/$DA {             ADD    DX,BX                ;THAT I FOUND A LONG TIME}
  40.           /$11/$C8 {             ADC    AX,CX                ;AGO. THANK YOU, WHOEVER YOU ARE!}
  41.           /$92 {                 XCHG   DX,AX}
  42.           /$B9/$0B/$E9 {         MOV    CX,$E90B}
  43.           /$F7/$F1 {             DIV    CX}
  44.           /$89/$C3 {             MOV    BX,AX}
  45.           /$31/$C0 {             XOR    AX,AX}
  46.           /$F7/$F1 {             DIV    CX}
  47.           /$89/$DA {             MOV    DX,BX}
  48.           /$B9/$C8/$00 {         MOV    CX,$00C8}
  49.           /$F7/$F1 {             DIV    CX}
  50.           /$80/$FA/$64 {         CMP    DL,$64               ;IS IT 100}
  51.           /$72/$03 {             JB     UNDER}
  52.           /$80/$EA/$64 {         SUB    DL,$64               ;SUBTRACT 100 IF > 100}
  53.           /$F5 {    UNDER:       CMC}
  54.           /$88/$D3 {             MOV    BL,DL}
  55.           /$D1/$D0 {             RCL    AX,1}
  56.           /$B2/$00 {             MOV    DL,00}
  57.           /$D1/$D2 {             RCL    DX,1}
  58.           /$B9/$3C/$00 {         MOV    CX,$003C}
  59.           /$F7/$F1 {             DIV    CX}
  60.           /$88/$D7 {             MOV    BH,DL}
  61.           /$F6/$F1 {             DIV    CL}
  62.           /$86/$E0 {             XCHG   AL,AH}
  63.           /$89/$DA {             MOV    DX,BX                ;IN THE END, DX HOLDS SECONDS}
  64.  
  65.         /$91 (*                XCHG   CX,AX                ;AND CX HAS THE HOURS,MINUTES *)
  66.         /$C4/$BE/HourMin   {   LES    DI,HourMin[BP]       ;Get address of HourMin }
  67.         /$26/$89/$0D       {   MOV    ES:[DI],CX           ;Move hours/minutes to result }
  68.         );
  69.  
  70. END   (* FastTime *);
  71.